package cn.itcast.dmp.report

import cn.itcast.dmp.config.AppConfigHelper
import cn.itcast.dmp.process.ReportProcessor
import org.apache.spark.sql.{DataFrame, SparkSession}

object ReportAdsRegionProcessor extends ReportProcessor{
//  报表统计：广告投放的地域分布
//  提供一个目标表名出去
  override def targetTableName: String = {
    AppConfigHelper.REPORT_ADS_REGION_TABLE_NAME
  }
//  提供目标表的分区键
  override def targetTableKeys: Seq[String] = {
    Seq("report_date","province","city")
  }
//  每个报表子类必须实现的方法，真正的依据报表需求进行分析数据
//  odsDF Kudu中ODS表
  override def realProcessData(odsDF: DataFrame): DataFrame = {
  val spark: SparkSession = odsDF.sparkSession
  // TODO: 此处使用SQL分析，所以先注册为临时视图，再编写SQL分析
   odsDF.createTempView("view_temp_ods")
  //用spark执行SQL语句，这些SQL语句写在一个ReportSQLConstant文件中，实现专门分类
val adsRegionReportDF: DataFrame = spark.sql(ReportSQLConstant.reportAdsKpiWithSQL("view_temp_ods",Seq("province","city")))
//返回DataFrame
  adsRegionReportDF
  }
}
